package com.common.util.antihijack;

import java.util.concurrent.CopyOnWriteArrayList;

/**
 * @文件名称：AppEventManager.java
 * @文件作者：ljb
 * @文件描述：应用前后台切换监听
 * @版本： 1.0.0
 * @创建时间：2017-12-18 15:37
 * @修改历史：2017-12-18 15:37
 */

class AppEventManager {

    private static volatile AppEventManager instance;
    private CopyOnWriteArrayList<AppEventListener> mEventListeners;


    private AppEventManager(){
        mEventListeners = new CopyOnWriteArrayList<>();
    }

    public static AppEventManager getInstance() {
        if (instance == null) {
            synchronized (AppEventManager.class) {
                if (instance == null) {
                    instance = new AppEventManager();
                }
            }
        }
        return instance;
    }


    public void addAppEventListener(AppEventListener listener) {
        if (mEventListeners != null && !mEventListeners.contains(listener)) {
            mEventListeners.add(listener);
        }
    }

    public void removeAppEventListener(AppEventListener listener) {
        if (listener != null && mEventListeners.contains(listener)) {
            mEventListeners.remove(listener);
        }
    }

    public void removeAppEventListener() {
        if (mEventListeners != null) {
            mEventListeners.clear();
        }
    }

    /**
     * 通知app 状态改变
     * @param front true 后台切换到前台， false 前台切换到后台
     */
    public void notifyAppStateChange(boolean front) {
        for(AppEventListener listener : mEventListeners) {
            listener.onAppStateChange(front);
        }
    }

    /**
     * app前后台切换状态监听
     */
    public interface AppEventListener{
        /**
         * app 前后台切换改变
         * @param front true: 后台切换到前台  false: 前台切换到后台
         */
        void onAppStateChange(boolean front);
    }

}
